/*
 * LigneTramway.cpp
 *
 *  Created on: 6 mars 2011
 *      Author: Julien
 */

#include "LigneTramway.h"
#include "Rame.h"
#include "Element.h"
#include "Section.h"

LigneTramway::LigneTramway(const int taille) {
	this->taille = taille;
	this->ligneTramway = new Section*[taille];
	cout << "*** Ligne créée ***" << endl;
}

void LigneTramway::ajouterSection(Section* s, const int place){
	if(place < this->taille){
		this->ligneTramway[place] = s;
		s->setLigneTramway(this);
		s->setNumero(place);
	}
	else{
		cout << "/!\\/!\\/!\\ Impossible d'ajouter la Section : place incorrecte /!\\/!\\/!\\ " << endl;
	}
}

// Deploie une rame à la position 0 de la premiere section de la ligne
void LigneTramway::deployerRame(Rame * rame, int section, int position){
	Section * s = this->ligneTramway[section];
	Element * e = s->getElement(position);
	e->setContenu(rame);
	rame->setSection(s);
	rame->setNumeroSection(section);
	rame->setPosition(position);
	cout << "*** Rame déployée en section " << section << " en position " << position << "***" << endl;
}

void LigneTramway::afficherLigne(){
	cout << endl;
	int i;
	for(i=0;i<this->taille;i++){
			this->ligneTramway[i]->afficher_feuxSection();
	}
	cout << endl;
	for(i=0;i<this->taille;i++){
		this->ligneTramway[i]->afficher_hautSection();
	}
	cout << endl;
	for(i=0;i<this->taille;i++){
		this->ligneTramway[i]->afficher_basSection();
	}
	cout << endl << endl;
}

Section* LigneTramway::operator [](const int place){
	return this->ligneTramway[place];
}

Section* LigneTramway::getSection(const int place){
	return this->ligneTramway[place];
}

LigneTramway::~LigneTramway() {
	// TODO Auto-generated destructor stub
}
